# Maintainer: Fathi Boudra <fathi.boudra@linaro.org>
pkgname=libguestfs
pkgver=1.44.1
pkgrel=0
pkgdesc="tools for accessing and modifying virtual machine disk images"
url="https://libguestfs.org/"
# only x86_64 is supported unless the qemu-system-x86_64 dependency can be parameterized with $arch
arch="x86_64"
# arch="all !s390x" # limited by libvirt-dev
license="GPL-2.0-or-later"
depends="cdrkit curl gptfdisk qemu-img qemu-system-x86_64"
makedepends="
 autoconf automake libtool
 acl-dev
 augeas-dev
 bash
 bison
 coreutils
 cpio
 file-dev
 flex
 fuse-dev
 gawk
 gettext-dev
 hivex-dev
 jansson-dev
 gperf
 libcap-dev
 libconfig-dev
 libselinux-dev
 libselinux-utils
 libtirpc-dev
 libvirt-dev
 libxml2-dev
 libxml2-utils
 ncurses-dev
 ocaml
 ocaml-findlib
 pcre-dev
 perl
 psmisc
 python3-dev
 qemu-system-aarch64
 qemu-system-arm
 qemu-system-i386
 qemu-system-ppc64
 qemu-system-s390x
 qemu-system-x86_64
 readline-dev
 xz
 xz-dev
"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang py3-$pkgname:_py"
source="
 http://download.libguestfs.org/1.44-stable/libguestfs-$pkgver.tar.gz
 https://raw.githubusercontent.com/alpinelinux/aports/3.9-stable/main/kbd/error.h
 ocaml-m4.patch
"
options="!check charset.alias" # Test suite does not support Alpine Linux at this moment

prepare() {
	default_prepare
	autoreconf -vif
	# busybox gzip does not support --best
	sed -i 's/gzip --best/gzip -9/g' test-data/files/*
	# musl lacks error.h
	cp -a "$srcdir"/error.h "$builddir"/lib/
}

build() {
	PYTHON=/usr/bin/python3 ./configure \
		--prefix=/usr \
		--mandir=/usr/share/man \
		--sysconfdir=/etc \
		--disable-probes \
		--disable-daemon \
		--disable-appliance \
		--disable-ocaml \
		--disable-perl \
		--disable-ruby \
		--disable-haskell \
		--disable-php \
		--disable-erlang \
		--disable-lua \
		--disable-golang \
		--disable-gobject \
		--without-java
	# Building index-parse.c and index-scan.c by hand works around a race
	# condition in the autotools cruft, where two other more copies of yacc
	# race with each other, resulting in a corrupted file.
	make -j1 -C builder index-parse.c
	make -j1 -C builder index-scan.c
	make V=1 INSTALLDIRS=vendor LTLIBINTL=-lintl
}

# FIXME test require supermin to create an appliance or a prebuilt binary appliance
# check() {
# 	cd "$builddir"
# 	wget http://download.libguestfs.org/binaries/appliance/appliance-1.38.0.tar.xz -O /tmp/appliance-1.38.0.tar.xz
# 	$(cd /tmp && tar xf appliance-1.38.0.tar.xz)
# 	export LIBGUESTFS_PATH=/tmp/appliance
# 	make quickcheck
# }

package() {
	make V=1 INSTALLDIRS=vendor DESTDIR="$pkgdir" install
	make V=1 INSTALLDIRS=vendor DESTDIR="$pkgdir" -C python install
}

_py() {
	pkgdesc="$pkgname - Python 3 bindings"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/
}

sha512sums="db6eab7350d9318a5ad5f968b24ed77ab411c9be3476b62b2b8448cf06db2462af1e3c9d8b02b54011d43651c281d74db7cb8023426a3f09667aa5b3597c7c33  libguestfs-1.44.1.tar.gz
c66f6b0d8c8b8d285c740bdbe7130dee272ac01cd5e73b35a58cedf1a77fe8d9e062631b804fb58014d8eb9861c8f28aed07bc022ef31662bcc61b5c85a21752  error.h
20c0e0abe7c30d55c9335a8579aac654603cf29d0074a2fbada3749529a5a121b30963ad6666d79eadab4126a73d59bcd2b01c3e118f927ac39f90681561249c  ocaml-m4.patch"
